﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TakbisBilgiSorgu_v1.wsUygulamaYetkiServis;
using TakbisBilgiSorgu_v1.wsUygulamaTakbisServis;
using System.Configuration;
using System.Text;

namespace TakbisBilgiSorgu_v1
{
    public partial class SFGercekKisiVatandaslikIslemleri : System.Web.UI.Page
    {
        UygulamaYetkiServis uygulamaYetkiServis = new UygulamaYetkiServis();
        UygulamaTakbisServis uygulamaTakbisServis = new UygulamaTakbisServis();

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!IsPostBack)
                {
                    if (((Kullanici)Session["kullanici"]) == null)
                    {
                        MesajVer(ConfigurationManager.AppSettings["GirisYapmalisinizMesaji"].ToString());
                        Response.Redirect("Login.aspx");
                    }
                    else
                    {
                        if (!uygulamaYetkiServis.GrupYetkiVarMiKontrolYeni(((Kullanici)Session["kullanici"]).GrupID, "SFGercekKisiVatandaslikIslemleri.aspx") || ((Kullanici)Session["kullanici"]).AktifMi != 1)
                        {
                            MesajVer(ConfigurationManager.AppSettings["YetkinizYokMesaji"].ToString());
                            Response.Redirect("AnaSayfa.aspx");
                        }
                        else
                        {
                            divgvGercekKisi.Visible = false;
                            divgvGercekKisiVatandaslik.Visible = false;
                            divgvBelge.Visible = false;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["YetkiServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnGetirGercekKisiBilgiIDDen_Click(object sender, EventArgs e)
        {
            try
            {
                if (uygulamaYetkiServis.BosDegerMi(txtGercekKisiID.Text.Trim()) && uygulamaYetkiServis.SqlInjectionControl(txtGercekKisiID.Text.Trim()))
                {
                    Session["gercekKisiBilgiList"] = new List<GercekKisiBilgi>();
                    ((List<GercekKisiBilgi>)Session["gercekKisiBilgiList"]).Add(uygulamaTakbisServis.GetirGercekKisiBilgiYabanciBilgisiIleIDDen(Convert.ToDecimal(txtGercekKisiID.Text.Trim()), ((Kullanici)Session["kullanici"]).ID));
                    if (Session["gercekKisiBilgiList"] != null && ((List<GercekKisiBilgi>)Session["gercekKisiBilgiList"]).Count > 0)
                    {
                        gvGercekKisi.DataSource = (List<GercekKisiBilgi>)Session["gercekKisiBilgiList"];
                        gvGercekKisi.DataBind();
                        ViewState["gercekKisiBilgiList"] = (List<GercekKisiBilgi>)Session["gercekKisiBilgiList"];
                        divgvGercekKisi.Visible = true;
                        divgvGercekKisiVatandaslik.Visible = false;
                        divgvBelge.Visible = false;
                    }
                    else
                        MesajVer("Sorgulanan Gerçek Kişi Bulunamadı.");
                }
                else
                    MesajVer("Sorgulama Kriterlerini Kontrol Edip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnGercekKisiExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvGercekKisi.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.GercekKisiBilgiExceleYaz(((List<GercekKisiBilgi>)Session["gercekKisiBilgiList"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                    Response.End();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void gvGercekKisi_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["gercekKisiBilgiList"] != null)
                {
                    gvGercekKisi.PageIndex = e.NewPageIndex;
                    gvGercekKisi.DataSource = ViewState["gercekKisiBilgiList"];
                }
                else
                    gvGercekKisi.DataSource = null;
                gvGercekKisi.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvGercekKisi_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvGercekKisi_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "AktifMi")) == "Pasif")
                    e.Row.ForeColor = System.Drawing.Color.Red;
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void SatirIsaretle(GridViewRowEventArgs e)
        {
            try
            {
                //mause gridin üzerine geldiğinde satırlar işaretlensin diye yaptım
                if (e.Row.RowType != DataControlRowType.DataRow)
                    return;
                // eger yaratilan satir farkliysa data satirindan buradan cik 
                e.Row.Attributes.Add("onmouseover", "this.originalstyle=this.style.backgroundColor;this.style.backgroundColor='#F0FFFF'");
                // mouse overina bu stil attribute'ini ekle 
                e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=this.originalstyle;");
                // mouse out ise eski stile don
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void SecilenGercekKisileriGetir()
        {
            Session["secilenGercekKisiBilgilist"] = new List<GercekKisiBilgi>();
            for (int i = 0; i < gvGercekKisi.Rows.Count; i++)
            {
                CheckBox chkRow = (gvGercekKisi.Rows[i].Cells[0].FindControl("CheckBoxGercekKisiBilgi") as CheckBox);
                if (chkRow.Checked)
                    ((List<GercekKisiBilgi>)Session["secilenGercekKisiBilgilist"]).Add(((List<GercekKisiBilgi>)Session["gercekKisiBilgiList"]).Find(ii => ii.GercekKisiBilgiID == Convert.ToDecimal((gvGercekKisi.Rows[i].Cells[0].FindControl("GercekKisiBilgiID") as Label).Text)) as GercekKisiBilgi);
            }
        }

        protected void btnVatandaslikBilgisiGetir_Click(object sender, EventArgs e)
        {
            try
            {
                SecilenGercekKisileriGetir();
                if (Session["secilenGercekKisiBilgilist"] != null && ((List<GercekKisiBilgi>)Session["secilenGercekKisiBilgilist"]).Count > 0)
                {
                    if (((List<GercekKisiBilgi>)Session["secilenGercekKisiBilgilist"])[0].GercekKisiVatandaslikList != null && ((List<GercekKisiBilgi>)Session["secilenGercekKisiBilgilist"])[0].GercekKisiBilgiID != 0)
                    {
                        Session["secilenGercekKisininVatandaslikBilgisi"] = ((List<GercekKisiBilgi>)Session["secilenGercekKisiBilgilist"])[0].GercekKisiVatandaslikList.ToList();
                        if (((List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"]).Count > 0)
                        {
                            ViewState["secilenGercekKisininVatandaslikBilgisi"] = (List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"];
                            gvGercekKisiVatandaslik.DataSource = (List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"];
                            gvGercekKisiVatandaslik.DataBind();
                            divgvGercekKisiVatandaslik.Visible = true;
                        }
                        else
                        {
                            Session["secilenGercekKisininVatandaslikBilgisi"] = null;
                            MesajVer("Seçilen Gerçek Kişiye Ait Vatandaşık Bilgisi Bulunmamaktadır.");
                        }
                    }
                    else
                        MesajVer("Seçilen Gerçek Kişiye Ait Vatandaşık Bilgisi Bulunmamaktadır.");
                }
                else
                    MesajVer("Gerçek Kişi Seçip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvGercekKisiVatandaslik_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                if (ViewState["secilenGercekKisininVatandaslikBilgisi"] != null)
                {
                    gvGercekKisiVatandaslik.PageIndex = e.NewPageIndex;
                    gvGercekKisiVatandaslik.DataSource = ViewState["secilenGercekKisininVatandaslikBilgisi"];
                }
                else
                    gvGercekKisiVatandaslik.DataSource = null;
                gvGercekKisiVatandaslik.DataBind();
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void gvGercekKisiVatandaslik_RowCreated(object sender, GridViewRowEventArgs e)
        {
            SatirIsaretle(e);
        }

        protected void gvGercekKisiVatandaslik_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Aktifmi")) == "Pasif")
                        e.Row.ForeColor = System.Drawing.Color.Red;
                }

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(gvGercekKisiVatandaslik, "Select$" + e.Row.RowIndex);
                    e.Row.ToolTip = "Click to select this row.";
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnGercekKisiVatandaslikExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvGercekKisiVatandaslik.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.GercekKisiVatandaslikExceleYaz(((List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                    Response.End();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void btnKanunaTabiMiBelgeGetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["secilenVatandaslik"] != null)
                {
                    if (((GercekKisiVatandaslik)Session["secilenVatandaslik"]).KanunaTabiMiBelgeBilgi != null)
                    {
                        List<BelgeBilgi> kanunaTabiMiBelgeBilgiList = new List<BelgeBilgi>();
                        kanunaTabiMiBelgeBilgiList.Add(((GercekKisiVatandaslik)Session["secilenVatandaslik"]).KanunaTabiMiBelgeBilgi);
                        gvBelge.DataSource = kanunaTabiMiBelgeBilgiList;
                        gvBelge.DataBind();
                        divgvBelge.Visible = true;
                    }
                    else
                        MesajVer("Seçilen Vatandaşlık Bilgisine Bağlı Belge Bulunmamaktadır.");
                }
                else
                    MesajVer("Vatandaşlık Bilgisi Seçip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnTurkAsilliMiBelgegetir_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["secilenVatandaslik"] != null )
                {
                    if (((GercekKisiVatandaslik)Session["secilenVatandaslik"]).TurkAsilliMiBelgeBilgi != null)
                    {
                        List<BelgeBilgi> turkAsilliMiBelgeBilgiList = new List<BelgeBilgi>();
                        turkAsilliMiBelgeBilgiList.Add(((GercekKisiVatandaslik)Session["secilenVatandaslik"]).TurkAsilliMiBelgeBilgi);
                        gvBelge.DataSource = turkAsilliMiBelgeBilgiList;
                        gvBelge.DataBind();
                        divgvBelge.Visible = true;
                    }
                    else
                        MesajVer("Seçilen Vatandaşlık Bilgisine Bağlı Belge Bulunmamaktadır.");
                }
                else
                    MesajVer("Vatandaşlık Bilgisi Seçip Lütfen Tekrar Deneyiniz.");
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void btnBelgeExceleYaz_Click(object sender, EventArgs e)
        {
            try
            {
                if (gvBelge.Rows.Count != 0)
                {
                    byte[] data = uygulamaTakbisServis.BelgeExceleYaz(((List<BelgeBilgi>)Session["GercekKisiVatandaslik"]).ToArray());
                    Response.Clear();
                    Response.ClearHeaders();
                    Response.ClearContent();
                    Response.AddHeader("content-disposition", "attachment;filename=Rapor.xls");
                    Response.AddHeader("Content-Type", "application/Excel");
                    Response.ContentEncoding = Encoding.GetEncoding("Windows-1252");
                    Response.ContentType = "application/vnd.xls";
                    Response.AddHeader("Content-Length", data.Length.ToString());
                    Response.BinaryWrite(data);
                    Response.Flush();
                    Response.End();
                }
                else
                    MesajVer(ConfigurationManager.AppSettings["YazdirilacakKayitYok"].ToString());
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                    if (ex.ToString().Contains("Sunucu isteği işleyemedi."))
                        MesajVer(ConfigurationManager.AppSettings["TakbisServisHatasi"].ToString());
                    else
                        MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
                }
            }
        }

        protected void gvGercekKisiVatandaslik_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (gvGercekKisiVatandaslik.Rows.Count > 1)
                {
                    foreach (GridViewRow row in gvGercekKisiVatandaslik.Rows)
                    {
                        if (row.RowIndex == gvGercekKisiVatandaslik.SelectedIndex)
                            row.ToolTip = string.Empty;
                        else
                        {
                            Session["secilenVatandaslik"] = null;
                            Session["secilenVatandaslikID"] = Convert.ToDecimal(gvGercekKisiVatandaslik.DataKeys[gvGercekKisiVatandaslik.SelectedIndex].Values[0]);
                            Session["secilenVatandaslik"] = ((List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"]).Where(x => x.GercekKisiVatandaslikID == ((decimal)Session["secilenVatandaslikID"])).ToList()[0];
                        }
                    }
                }
                else
                {
                    Session["secilenVatandaslik"] = null;
                    Session["secilenVatandaslikID"] = Convert.ToDecimal(gvGercekKisiVatandaslik.DataKeys[gvGercekKisiVatandaslik.SelectedIndex].Values[0]);
                    Session["secilenVatandaslik"] = ((List<GercekKisiVatandaslik>)Session["secilenGercekKisininVatandaslikBilgisi"]).Where(x => x.GercekKisiVatandaslikID == ((decimal)Session["secilenVatandaslikID"])).ToList()[0];
                }
            }
            catch (Exception ex)
            {
                using (ExceptionLogDao el = new ExceptionLogDao())
                {
                    el.HataLogYaz(DateTime.Now.ToString() + "  " + ex.ToString());
                }
                MesajVer(ConfigurationManager.AppSettings["HataMesaji"].ToString());
            }
        }

        protected void MesajVer(string mesaj)
        {
            ClientScript.RegisterStartupScript(this.GetType(), " Uyarı.. ", "ShowPopup('" + mesaj + "');", true);
        }
    }
}
